// 使用 ES 模块语法导入 ioredis 和其类型

import Redis, { RedisOptions } from 'ioredis'
import config from '../config'

// 校验并转换配置项
if (
  !config.redis ||
  typeof config.redis.port !== 'string' ||
  isNaN(Number(config.redis.port))
) {
  throw new Error('Redis 配置错误: port 必须是有效的数字字符串')
}

// 基础配置（根据实际情况修改）
const redisConfig: RedisOptions = {
  port: Number(config.redis.port), // 将字符串转换为数字
  host: config.redis.host || '127.0.0.1', // Redis 主机，默认值为 127.0.0.1
  password: config.redis.password || '', // 如果有密码，默认为空字符串
  db: Number(config.redis.db || 0) // 数据库编号，默认为 0
}

// 创建 Redis 客户端实例
const redis = new Redis(redisConfig)

// 错误监听，为 err 参数指定类型
redis.on('error', (err: Error) => {
  console.error('Redis连接错误:', err.message)
})

export default redis
